const env = process.env.NODE_ENV || 'development';
require('dotenv').config({ path: `.env.${env}` });

import { Module, NestModule } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { getMetadataArgsStorage } from 'typeorm';
import { UserModule } from './user/user.module';
import { AuthModule } from './auth/auth.module';
import { PageModule } from './page/page.module';
import { FileModule } from './file/file.module';
import { CategoryModule } from './category/category.module';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      entities: getMetadataArgsStorage().tables.map((tbl) => tbl.target),
      host: process.env.DB_HOST ?? '127.0.0.1',
      database: process.env.DB_DATABASE ?? 'test',
      username: process.env.DB_USER ?? 'root',
      password: process.env.DB_PASSWORD ?? '',
      port: Number(process.env.DB_PORT) ?? 3306,
      // entities: [__dirname + '/**/*.entity.ts'],
      synchronize: true, //synchronize字段代表是否自动将实体类同步到数据库
      retryDelay: 500, //重试连接数据库间隔
      retryAttempts: 10, //重试连接数据库的次数
      timezone: '+08:00',
      autoLoadEntities: true, //如果为true,将自动加载实体 forFeature()方法注册的每个实体都将自动添加到配置对象的实体数组中
    }),
    AuthModule,
    UserModule,
    FileModule,
    PageModule,
    CategoryModule,
  ],
})
export class AppModule implements NestModule {
  configure() {
    // 指定使用登录验证中间件的路由
  }
}
